5.1. 现代计算架构的起源

追溯现代计算架构的起源,人们很容易认为现代计算机是连续演变的线性链条的一部分,每台机器都只是对之前存在的机器的改进。虽然这种继承计算机设计改进的观点可能适用于某些类型的架构(想想 iPhone X 从最初的 iPhone 开始的迭代改进),但架构树的根源却不那么明确。

从 18 世纪到 20 世纪初,数学家是第一批用于科学和工程应用相关计算的“人脑”计算机。“计算机”一词最初是指“计算的人”。女数学家经常担任计算机的角色。事实上,女性作为人脑计算机的使用非常普遍,以至于计算复杂度以“千人计算机”来衡量,即一千台人脑计算机在一小时内可以完成的工作量。人们普遍认为女性比男性更擅长做数学计算,因为她们往往更有条理。女性不被允许担任工程师。因此,她们被降级为更“卑微”的工作,例如计算复杂的计算。

第一台通用数字计算机分析机是由英国数学家查尔斯·巴贝奇设计的,他被一些人誉为计算机之父。分析机是他最初发明的差分机的延伸,差分机是一种能够计算多项式函数的机械计算器。艾达·洛夫莱斯也许应该被称为计算机之母,她是第一个开发计算机程序的人,也是第一个发布可以使用查尔斯·巴贝奇的分析机进行计算的算法的人。在她的笔记中,包括了她对分析机通用性的认识:“分析机不具备任何创造任何东西的本领。它可以做任何我们知道的命令它做的事情。3”然而,与现代计算机不同,分析机是一种机械装置,而且只是部分建成。大多数成为现代计算机直接前身的设计师在开发自己的机器时,并不知道巴贝奇和洛夫莱斯的工作。

因此,或许更准确地说,现代计算机架构源自 20 世纪 30 年代和 40 年代出现的大量原始思想和创新。例如,1937 年,麻省理工学院的学生克劳德·香农 (Claude Shannon) 撰写了一篇后来成为有史以来最具影响力的硕士论文。香农借鉴了乔治·布尔(开发布尔代数的数学家)的工作,表明布尔逻辑可以应用于电路并可用于开发电气开关。这将导致二进制计算系统的发展,以及未来许多数字电路设计的发展。虽然许多早期的电子计算机都是由男性设计的,但女性(她们不允许成为工程师)成为编程先驱,领导了许多早期软件创新的设计和开发,例如编程语言、编译器、算法和操作系统。

本书无法全面讨论计算机架构的兴起(有关更详细的介绍,请参阅乔治戴森的《图灵大教堂》4 和沃尔特艾萨克森的《创新者》6);但我们简要列举了 20 世纪 30 年代和 40 年代发生的几项重大创新,这些创新对现代计算机架构的兴起起到了重要作用。

5.1.1. The Turing Machine图灵机

1937 年,英国数学家阿兰·图灵提出7“逻辑计算机”,一种理论计算机。图灵使用这台机器证明了数学家戴维·希尔伯特和威廉·阿克曼于 1928 年提出的决策问题 (德语为 Entscheidungsproblem) 没有解。决策问题是一种以语句作为输入并确定该语句是否普遍有效的算法。图灵通过证明 停机问题 (机器 X 是否会在输入 y 时停止?) 对于图灵机是不可判定的,证明了不存在这样的算法。作为这一证明的一部分,图灵描述了一种能够执行任何其他计算机器任务的通用机器。图灵在普林斯顿大学的论文导师阿隆佐·丘奇是第一个将 逻辑计算机 称为 图灵机,并将其通用形式称为 通用图灵机 的人。

图灵后来回到英国,在第二次世界大战期间作为布莱切利园密码破译小组的一员为祖国效力。他在 Bombe 的设计和建造中发挥了重要作用。Bombe 是一种机电设备,帮助破解了恩尼格玛密码机生成的密码,而恩尼格玛密码机在第二次世界大战期间被纳粹德国广泛用于保护敏感通信。

战后,图灵设计了自动计算机(ACE)。ACE 是一种存储程序计算机,这意味着程序指令及其数据都加载到计算机内存中并由通用计算机运行。他的论文发表于 1946 年,可能是对这种计算机最详细的描述8。

5.1.2. 早期电子计算机

第二次世界大战加速了早期计算机的发展。然而,由于第二次世界大战军事行动的机密性质,许多因战争期间的激烈活动而产生的创新细节直到多年后才被公开承认。一个很好的例子是 Colossus,这是一台由英国工程师 Tommy Flowers 设计的机器,用于帮助破解 Lorenz 密码,纳粹德国曾使用 Lorenz 密码对高级情报通信进行编码。Alan Turing 的一些工作也为其设计提供了帮助。Colossus 于 1943 年制造,可以说是第一台可编程、数字化、全电子化的计算机。然而,它是一台专用计算机,专为密码破解而设计。皇家海军女子服务队 (WRNS,又称“Wrens”) 是 Colossus 的操作员。尽管《金枪鱼总报告》14 指出,几位雷恩级人员表现出了密码工作方面的能力,但他们都没有被授予密码员的职位,而是被委派了更为琐碎的巨像操作任务5,15

在大西洋彼岸,美国科学家和工程师们正在努力创造自己的计算机。哈佛大学教授霍华德·艾肯(他也是海军预备役的海军指挥官)设计了 Mark I,这是一款机电式通用可编程计算机。它于 1944 年制造,为原子弹的设计提供了帮助。艾肯在制造计算机时,对图灵的工作知之甚少,他的动机是让查尔斯·巴贝奇的分析引擎成为现实6。Mark I 的一个关键特性是它是全自动的,能够在无人干预的情况下运行数天6。这将成为未来计算机设计的一个基础特性。

与此同时,美国工程师宾夕法尼亚大学的约翰·莫奇利和普雷斯珀·埃克特于 1945 年设计并制造了电子数字积分计算机 (ENIAC)。ENIAC 可以说是现代计算机的前身。它是数字化的(尽管它使用十进制而不是二进制)、全电子化、可编程和通用的。虽然 ENIAC 的原始版本不具备存储程序功能,但此功能在 20 世纪 90 年代末之前就已内置。ENIAC 由美国陆军弹道研究实验室资助并建造,主要用于计算弹道轨迹。后来,它被用来辅助设计氢弹。

第二次世界大战期间,男性被征召入伍,女性则被聘为人类计算机,为战争出力。随着第一台电子计算机的出现,女性成为第一批程序员,因为编程被认为是秘书工作。编程领域的许多早期创新,如第一个编译器、模块化程序的概念、调试和汇编语言,都归功于女性发明家,这并不奇怪。例如,格蕾丝·霍珀 (Grace Hopper) 开发了第一种高级且独立于机器的编程语言 (COBOL) 及其编译器。霍珀还是 Mark I 的程序员,并撰写了一本描述其操作的书。

ENIAC 的程序员有六位女性:Jean Jennings Bartik、Betty Snyder Holberton、Kay McNulty Mauchly、Frances Bilas Spence、Marlyn Wescoff Meltzer 和 Ruth Lichterman Teitelbaum。与 Wren 姐妹不同,ENIAC 的女性程序员在工作中拥有很大的自主权;她们只拿到了 ENIAC 的接线图,就被要求弄清楚它的工作原理和编程方法。除了在解决如何编程(和调试)世界上第一台电子通用计算机方面取得创新成果外,ENIAC 程序员还开发了算法流程图的概念,并开发了子程序和嵌套等重要的编程概念。与 Grace Hopper 一样,Jean Jennings Bartik 和 Betty Snyder Holberton 后来在计算机领域工作了很长时间,是早期计算机领域的先驱。不幸的是,女性在早期计算机领域做出的贡献尚不清楚。由于无法晋升,许多女性在二战后离开了这个领域。若要了解有关早期女性程序员的更多信息,我们鼓励读者阅读 Janet Abbate 的《重新编码性别》11、LeAnn Erickson 执导的 PBS 纪录片《绝密罗西斯》12 和 Kathy Kleiman 13的《计算机》。

英国人和美国人并不是唯一对计算机潜力感兴趣的人。在德国,康拉德·楚泽开发了第一台机电式通用数字可编程计算机 Z3,该计算机于 1941 年完成。楚泽的设计独立于图灵等人的工作。值得注意的是,楚泽的设计使用二进制(而不是十进制),这是第一台使用二进制系统的计算机。然而,Z3 在柏林空袭期间被毁,楚泽直到 1950 年才得以继续他的工作。他的工作直到多年后才被广泛认可。他被广泛认为是德国计算机之父。

5.1.3. 什么是冯·诺依曼机器?

从我们对现代计算机体系结构起源的讨论中可以看出,在 20 世纪 30 年代和 40 年代,有几项创新导致了我们今天所知的计算机的兴起。1945 年,约翰·冯·诺依曼发表了一篇论文《EDVAC 报告初稿》9,其中描述了现代计算机所基于的体系结构。EDVAC 是 ENIAC 的后继者。它与 ENIAC 的不同之处在于它是一台二进制计算机而不是十进制计算机,并且它是一台存储程序计算机。今天,对 EDVAC 架构设计的描述被称为 冯·诺依曼架构

冯·诺依曼架构 描述的是一种通用计算机,旨在运行任何程序。它还使用存储程序模型,这意味着程序指令和数据都被加载到计算机上运行。在冯·诺依曼模型中,指令和数据没有区别;两者都被加载到计算机的内部存储器中,程序指令从内存中取出并由计算机的功能单元执行,这些功能单元对程序数据执行程序指令。

约翰·冯·诺依曼的贡献与计算机领域的几位前辈的故事交织在一起。他是匈牙利数学家,曾担任高等研究院和普林斯顿大学的教授,也是艾伦·图灵的早期导师。后来,冯·诺依曼成为曼哈顿计划的研究科学家,这使他认识了霍华德·艾肯和 Mark I;他后来担任 ENIAC 项目的顾问,并定期与埃克特和莫奇利通信。他那篇描述 EDVAC 的著名论文来自他对电子离散变量自动计算机 (EDVAC) 的研究,该计算机由埃克特和莫奇利向美国陆军提出,并由宾夕法尼亚大学建造。EDVAC 包括几项架构设计创新,这些创新构成了几乎所有现代计算机的基础:它是通用的,使用二进制数字系统,有内部存储器,并且完全是电动的。很大程度上,由于冯·诺依曼是这篇论文的唯一作者9,论文中描述的架构设计主要归功于冯·诺依曼,并被称为冯·诺依曼架构。值得注意的是,图灵在 1946 年详细描述了类似机器的设计。然而,由于冯·诺依曼的论文发表于图灵之前,因此冯·诺依曼获得了这些创新的主要功劳。

无论谁“真正”发明了冯·诺依曼架构,冯·诺依曼自己的贡献都不应被贬低。他是一位才华横溢的数学家和科学家。他对数学的贡献范围从集合论到量子力学和博弈论。在计算领域,他也被认为是归并排序算法的发明者。沃尔特·艾萨克森在他的《创新者》一书中指出,冯·诺依曼最大的优势之一在于他能够广泛合作,并直观地看到新概念的重要性6。许多早期的计算机设计师都是独立工作的。艾萨克森认为,通过目睹 Mark I 计算机的缓慢,冯·诺依曼能够直观地认识到真正电子计算机的价值,以及在内存中存储和修改程序的必要性。因此可以说,冯·诺依曼比埃克特和莫奇利更了解并充分认识到全电子存储程序计算机6的威力。

5.1.4. 引用

  1. David Alan Grier, "When Computers Were Human", Princeton University Press, 2005.
  2. Megan Garber, "Computing Power Used to be Measured in 'Kilo-Girls'". The Atlantic, October 16, 2013. https://www.theatlantic.com/technology/archive/2013/10/computing-power-used-to-be-measured-in-kilo-girls/280633/
  3. Betty Alexandra Toole, "Ada, The Enchantress of Numbers". Strawberry Press, 1998.
  4. George Dyson, Turing’s Cathedral: the origins of the digital universe. Pantheon. 2012.
  5. Jack Copeland, "Colossus: The Secrets of Bletchley Park’s Code-breaking Computers".
  6. Walter Isaacson. "The Innovators: How a group of inventors, hackers, genius and geeks created the digital revolution". Simon and Schuster. 2014.
  7. Alan M. Turing. "On computable numbers, with an application to the Entscheidungsproblem"Proceedings of the London mathematical society 2(1). pp. 230—​265. 1937.
  8. Brian Carpenter and Robert Doran. "The other Turing Machine"The Computer Journal 20(3) pp. 269—​279. 1977.
  9. John von Neumann. "First Draft of a Report on the EDVAC (1945)". Reprinted in IEEE Annals of the history of computing 4. pp. 27—​75. 1993.
  10. Arthur Burks, Herman Goldstine, John von Neumann. "Preliminary discussion of the logical design of an electronic computing instrument (1946)". Reprinted by The Origins of Digital Computers (Springer), pp. 399—​413. 1982.
  11. Janet Abbate. "Recoding gender: Women’s changing participation in computing". MIT Press. 2012.
  12. LeAnn Erickson. "Top Secret Rosies: The Female Computers of World War II". Public Broadcasting System. 2010.
  13. Kathy Kleiman, "The Computers"http://eniacprogrammers.org/
  14. "Breaking Teleprinter Ciphers at Bletchley Park: An edition of I.J. Good, D. Michie and G. Timms: General Report on Tunny with Emphasis on Statistical Methods (1945)". Editors: Reeds, Diffie, Fields. Wiley, 2015.
  15. Janet Abbate, "Recoding Gender", MIT Press, 2012.